package com.hb.config;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import javax.servlet.ServletRegistration.Dynamic;
import java.util.Set;

public class WebAppConfig implements WebApplicationInitializer {
    /**
     * ServletContext 应该是 groupId：javax.servlet，artifactId：javax.servlet-api 中的，而不是在 groupId：javax.servlet，artifactId：servlet-api 里面。
     * 由于 spring-core5 会引入 groupId：javax.servlet，artifactId：servlet-api，导致这个 ServletContext 没有 addServlet() 方法，将 spring-core5 改为
     * spring-core4 之后 groupId：javax.servlet，artifactId：servlet-api 就没有了，ServletContext 此时唯一来自于 groupId：javax.servlet，artifactId：javax.servlet-api
     * @param servletContext
     * @throws ServletException
     */
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        Dynamic dispatcher = servletContext.addServlet("dispatcherServlet", DispatcherServlet.class);
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");
        // 如果在 Java 中通过实现 WebApplicationInitializer 来配置 DispatcherServlet 的话，那么需要将 URL 模式作为映射添加到 ServletRegistration.Dynamic 中，
        // 在将 DispatcherServlet 添加到容器中的时候，我们能够得到 ServletRegistration.Dynamic 对象。
        dispatcher.addMapping("*.service");
    }
}
